package com.mine.springmvc.run;

/*
* 函数式接口是学习Java8 lambda表达式的关键所在
*
* 函数式接口的定义
*  任何接口，如果只包含唯一一个抽象方法，那么他就是一个函数式接口
*
* 对于函数式接口，我们可以通过lambda表达式来创建改接口的对象
*
*
*
* */
public class TestLambda {

    //3.静态内部类
    static  class Like2 implements ILike{
        @Override
        public void lambda() {
            System.out.println("我喜欢用lambda表达式2");
        }
    }


    public static void main(String[] args) {
        ILike like = new Like();
        like.lambda();

        like = new Like2();
        like.lambda();

        //4. 局部内部类
        class Like3 implements ILike{
            @Override
            public void lambda() {
                System.out.println("我喜欢用lambda表达式3");
            }
        }

        like = new Like3();
        like.lambda();

        //5. 匿名内部类,没有类的名称，必须借助接口或者父类 没有名字了
        like = new ILike() {
            @Override
            public void lambda() {
                System.out.println("我喜欢用lambda表达式4");
            }
        };
        like.lambda();

        //6. 能不能再简化一下， 用lambda简化

        like =()->{
            System.out.println("我喜欢用lambda表达式5");
        };

        like.lambda();


    }

}

//定义一个接口
interface ILike{

    void lambda();
}

//2.实现类
class Like implements ILike{

    @Override
    public void lambda() {
        System.out.println("我喜欢用lambda表达式1");
    }
}
